package com.zjpavt.taiyuan.service.flowManager;

import com.zjpavt.taiyuan.service.flowManager.pojo.*;

import java.util.List;

/**
 * @Author caozhi
 * @Date 2020/1/13
 * @Description 移动平台流量查询接口
 * @Param
 * @Return
 */
public interface TrafficStatisticsService {
    /**
     * 物联卡生命周期查询
     * @param msisdn 物联卡号码（最长13位数字）
     * @return
     * 应答数据： lifecycle 物联卡生命周期
     *           opentime  物联卡开卡时间
     */
    LifeCycleSO lifeCycleQuery(String msisdn);

    /**
     * 物联卡生命周期批量查询
     * @param msisdns
     * @return
     */
    List<LifeCycleSO> batchLifeCycleQuery(String[] msisdns);

    /**
     * 集团异常状态物联卡数量查询
     * @return
     * 应答数据：cardUnusualNum 集团异常物联卡数量
     */
    int abnormalStatusQuantityQuery();

    /**
     * 集团GPRS在线物联卡数量查询
     * @return
     * 应答数据：gprstotalnum GPRS在线物联卡数量
     */
    int gprsOnlineQuantityQuery();

    /**
     * 用户当月GPRS查询
     * @param msisdn
     * @return
     * 应答数据：total_gprs 用户当月使用的总的GPRS流量（单位：KB）
     */
    double currentMonthGprs(String msisdn);

    /**
     * 流量批量查询
     * @param msisdns
     * @param query_date 查询时间 yyyymmdd
     * @return
     * 应答数据：GPRS 当日使用的GPRS流量总量（单位：KB）
     *          MSISDN 所查询的物联卡号码
     *          ICCID 集成电路卡识别码
     *          IMSI 国际移动用户识别码
     */
    List<TrafficQuerySO> batchTrafficQuery(String[] msisdns, String query_date);

    /**
     * 套餐内GPRS流量使用情况实时查询
     * @param msisdn
     * @return
     */
    GprsTrafficSO packageGprsUsage(String msisdn);

    /**
     * 物联卡单日GPRS使用量查询
     * @param queryDate
     * @return
     * 应答数据：gprs GPRS使用量（单位：KB）
     */
    double singleGprsUsage(String queryDate);

    /**
     * 物联卡当月流量共享使用信息实时查询
     * @param msisdn
     * @return
     */
    TrafficSharingUsageSO currentMonthTrafficSharingQuery(String msisdn);

    /**
     * 物联卡当月流量共享使用信息实时批量查询
     * @param msisdns
     * @return
     *
     */
    List<TrafficSharingUsageSO> batchCurrentMonthTrafficSharingQuery(String[] msisdns);

    /**
     * 物联卡单月GPRS使用量查询
     * @param msisdn
     * @param queryMonth 必须为不含当月的最近6个月
     * @return
     */
    double gprsUsageQuery(String msisdn,String queryMonth);

    /**
     * 物联卡单月GPRS使用量批量查询
     * @param msisdns
     * @param queryMonth
     * @return
     */
    List<GprsUsageSO> batchGprsUsageQuery(String[] msisdns, String queryMonth);

    /**
     * 物联卡当月GPRS使用量批量查询
     * @param msisdns
     * @return
     */
    List<CurrentGprsUsageSO> currentMonthGprsUsageQuery(String[] msisdns);

    /**
     * 物联卡当月套餐内GPRS流量信息批量查询
     * @param msisdns
     * @return
     */
    List<PackageGprsTrafficSO> monthPackageGprsTrafficQuery(String[] msisdns);

    /**
     * 集团单日GPRS使用情况统计查询
     * @param queryDate 所查询日期，必须为31天内的某一天
     * @return
     */
    SingleDayGprsUsageSO dayGprsUsageQuery(String queryDate);
}